home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / RCS / robot.h,v < prev    next >
Text File  |  1992-03-06  |  6KB  |  199 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.2
  10. date     92.03.06.12.54.28;  author mani;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     92.03.06.12.51.11;  author mani;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @IOControl and data structure definitions for Exabyte EXB-120 robot.
  22. @
  23.  
  24.  
  25. 1.2
  26. log
  27. @same.
  28. @
  29. text
  30. @/* 
  31.  * robot.h --
  32.  *
  33.  *    Definitions and macros for the Exabyte EXB-120 robot device.
  34.  *
  35.  * Copyright 1992 Regents of the University of California
  36.  * Permission to use, copy, modify, and distribute this
  37.  * software and its documentation for any purpose and without
  38.  * fee is hereby granted, provided that this copyright
  39.  * notice appears in all copies.  The University of California
  40.  * makes no representations about the suitability of this
  41.  * software for any purpose.  It is provided "as is" without
  42.  * express or implied warranty.
  43.  *
  44.  * $Header: $ SPRITE (Berkeley)
  45.  */
  46.  
  47. #ifndef _ROBOT
  48. #define _ROBOT
  49.  
  50. #include <machparam.h>
  51.  
  52. /*
  53.  * The following structure is a parameter to an Fs_IOControl call.
  54.  * Obviously, not all the fields will be used for every call. For
  55.  * example, a MoveMedium command will only use sourceAddr and
  56.  * destAddr, and perhaps eePos.
  57.  */
  58.  
  59. typedef struct Dev_RobotCommand {
  60.     unsigned int    sourceAddr;     /* Address of tape to be moved. */
  61.     unsigned int    destAddr;      /* Destination of robot arm or of
  62.                      * tape to be moved. */
  63.     unsigned int    elemAddr;    /* Starting address of elements 
  64.                      * for the InitializeElemStatus 
  65.                      * command. */
  66.     unsigned int    numElements;    /* Number of elements to be 
  67.                      * initialized. */
  68.     unsigned int    allocLength;    /* Number of bytes allocated for
  69.                      * additional data. Command dependent. */
  70.     unsigned char     eePos;        /* What to do with the Entry/Exit port.
  71.                      * See the documentation on the Move/Medium
  72.                      * command. */
  73.     unsigned char     prevAllow;    /* For the Prevent/Allow removal command. */
  74.     unsigned char    range;        /* The range of elements to be scanned.
  75.                      * See the InitializeElemStatus command. */
  76.     unsigned char    volTag;        /* Used with the ReadElemStatus command. */
  77.     unsigned char    elemTypeCode;      /* Used with the ReadElemStatus command. */
  78.     unsigned char    pageControl;    /* Used with the ModeSense command. */
  79.     Address         dataPtr;    /* Address of data to be returned from
  80.                      * the device. */
  81.     unsigned int     dataLength;    /* Length of the data. */
  82.     unsigned int     savedPage;    /* Whether the ModeSelect changes are
  83.                      * stored in nonvolatile memory or not. */
  84.     unsigned char    mesgDisplay;    /* For the ModeSelect command.
  85.                      * 0 == Flashing 8-character display.
  86.                      * 1 == Steady 8-character display.
  87.                      * 2 == Scrolling display. */
  88.     char               *mesgString;    /* For the ModeSelect command.
  89.                      * The message to be displayed on
  90.                      * the front of the EXB-120. */
  91. } Dev_RobotCommand;
  92.  
  93.  
  94.  
  95. typedef struct ExbRobotInquiryData {
  96. #if BYTE_ORDER == BIG_ENDIAN
  97.     unsigned char type;         /* Peripheral device type */
  98.     unsigned char rmb:1;        /* Removable Medium bit. */
  99.     unsigned char qualifier:7;  /* Device type qualifier. */
  100.     unsigned char version;      /* Version info. */
  101.     unsigned char reserved:4;   /* reserved. */
  102.     unsigned char format:4;     /* Response format. */
  103. #else /* BYTE_ORDER == LITTLE_ENDIAN */
  104.     unsigned char type;        /* Peripheral device type. */
  105.     unsigned char qualifier:7;    /* Device Type qualifier. */
  106.     unsigned char rmb:1;    /* Removable Medium bit. */
  107.     unsigned char version;    /* Version info. */
  108.     unsigned char format:4;    /* Response format */
  109.     unsigned char reserved:4;    /* reserved. */
  110. #endif
  111.     unsigned char length;         /* Additional length of data returned. */
  112.     unsigned char reserved2[3];   /* More reserved and not supported. */
  113.     char          vendorID[8];  /* Vector identification. */
  114.     char          productID[16]; /* Product identification. */
  115.     char          revLevel[4]; /* Firmware identification. */
  116.     unsigned char reserved3[20];  /* More reserved. */
  117. } ExbRobotInquiryData; 
  118.  
  119.  
  120. typedef struct ExbRobotSenseData {
  121. #if BYTE_ORDER == BIG_ENDIAN
  122.     unsigned char valid:1;    /* Reserved. */
  123.     unsigned char errorClass:3;    /* Binary 111 on EXB. */
  124.     unsigned char errorCode:4;    /* 0 on EXB. */
  125.     unsigned char segmentNum;    /* 0 on EXB. */
  126.     unsigned char filemark:1;    /* The following three are 0 on EXB. */
  127.     unsigned char eom:1;
  128.     unsigned char ili:1;
  129.     unsigned char reserved:1;
  130.     unsigned char senseKey:4;    /* 0x0 : No Sense
  131.                  * 0x2 : Not Ready
  132.                  * 0x4 : Hardware Error
  133.                  * 0x5 : Illegal Request
  134.                  * 0x6 : Unit Attention
  135.                  * 0xb : Aborted Command
  136.                  */
  137.     unsigned char infoBytes[4];
  138.     unsigned char addlSenseLen;    /* Number of additional bytes of
  139.                  * sense data.
  140.                  */
  141.     unsigned char commandSpecific[4];
  142.     unsigned char addlSenseCode;
  143.     unsigned char addlSenseCodeQualfr;
  144.     unsigned char fruCode;
  145.     unsigned char sksv:1;
  146.     unsigned char senseKeySpecfc1:7;
  147.     unsigned char senseKeySpecfc2[2];
  148. #else /* BYTE_ORDER == LITTLE_ENDIAN */
  149.     unsigned char errorCode:4;
  150.     unsigned char errorClass:3;
  151.     unsigned char valid:1;
  152.     unsigned char segmentNum;
  153.     unsigned char senseKey:4;
  154.     unsigned char reserved:1;
  155.     unsigned char ili:1;
  156.     unsigned char eom:1;
  157.     unsigned char filemark:1;
  158.     unsigned char infoBytes[4];
  159.     unsigned char addlSenseLen;
  160.     unsigned char commandSpecific[4];
  161.     unsigned char addlSenseCode;
  162.     unsigned char addlSenseCodeQualfr;
  163.     unsigned char fruCode;
  164.     unsigned char senseKeySpecfc1:7;
  165.     unsigned char sksv:1;
  166.     unsigned char senseKeySpecfc2[2];
  167. #endif
  168. } ExbRobotSenseData;
  169.  
  170.  
  171. #define IOC_ROBOT_INIT_ELEM_STATUS     62
  172. #define IOC_ROBOT_READ_ELEM_STATUS    63
  173. #define IOC_ROBOT_INQUIRY        64
  174. #define IOC_ROBOT_REQ_SENSE        65
  175. #define IOC_ROBOT_MOVE_MEDIUM        66
  176. #define IOC_ROBOT_POS_ELEM        67
  177. #define IOC_ROBOT_MODE_SEL        68
  178. #define IOC_ROBOT_MODE_SENSE        69
  179. #define IOC_ROBOT_NO_OP            70
  180. #define IOC_ROBOT_PREV_REMOVAL        71
  181. #define IOC_ROBOT_DISPLAY        72
  182.  
  183. #endif /* _ROBOT */
  184.  
  185.  
  186.  
  187. @
  188.  
  189.  
  190. 1.1
  191. log
  192. @Initial revision
  193. @
  194. text
  195. @d15 1
  196. a15 1
  197.  * $ $ SPRITE (Berkeley)
  198. @
  199.